//============================================================================
// Copyright (C) 2013 Brett R. Jones
//
// Issued to public domain 2013
//
// brettjones1900@gmail.com
// http://www.p2panarchy.com
//============================================================================

#include "VxFileIsTypeFunctions.h"
#include "VxFileUtil.h"
#include "VxParse.h"

#define IMAGE_FILE_EXTENTIONS			"jpg,jpeg,bmp,tga,png,gif,pcx,tif"				
#define AUDIO_FILE_EXTENTIONS			"mp3,wav,wma,ogg"				
#define VIDEO_FILE_EXTENTIONS			"asf,mpg,mpeg,mp4,3gp,mov,avi,divx,mkv,wmv,rm"				
#define EXECUTABLE_FILE_EXTENTIONS		"exe,com"				
#define ARCHIVE_OR_DOC_FILE_EXTENTIONS	"zip,rar,tar,doc,txt,htm,html,pdf"	
#define CD_IMAGE_FILE_EXTENTIONS		"iso,cue,ccd,img,sub,bin,mds,nrg,pdi,mds,vob"	
#define COMBINED_FILE_EXTENTIONS		"jpg,jpeg,bmp,tga,png,gif,pcx,mp3,wav,wma,ogg,asf,mpg,mpeg,mp4,3gp,mov,avi,divx,mkv,wmv,rm,exe,com,zip,rar,tar,doc,txt,htm,html,pdf,iso,cue,ccd,img,sub,bin,mds,nrg,pdi,mds,vob"	

/*
#define FILE_TYPE_PHOTO_STR				"Photo"		
#define FILE_TYPE_AUDIO_STR				"Audio"		
#define FILE_TYPE_VIDEO_STR				"Video"		
#define FILE_TYPE_EXECUTABLE_STR		"Executable"	
#define FILE_TYPE_ARCHIVE_OR_DOC_STR	"Archive or Document"
#define FILE_TYPE_CD_IMAGE_STR			"CD or DVD Image"
#define FILE_TYPE_OTHER_STR				"Other"
#define FILE_TYPE_ANY_STR				"Any"
*/


//============================================================================--
bool IsImageFile( std::string & cs )
{
	std::string csExt; 
	VxGetFileExtension( cs, csExt );
	return IsImageFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsImageFileExtention( const char * pExt )
{
	return stristr( IMAGE_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsAudioFile( std::string & cs )
{
	std::string csExt; 
	VxGetFileExtension( cs, csExt );
	return IsAudioFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsAudioFileExtention( const char * pExt )
{
	return stristr( AUDIO_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsVideoFile( std::string &cs )
{
	std::string csExt;
	VxGetFileExtension( cs, csExt );
	return IsVideoFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsVideoFileExtention( const char * pExt )
{
	return stristr( VIDEO_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsExecutableFile( std::string &cs )
{
	std::string csExt;
	VxGetFileExtension( cs, csExt );
	return IsExecutableFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsExecutableFileExtention( const char * pExt )
{
	return stristr( EXECUTABLE_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsArchiveOrDocFile( std::string &cs )
{
	std::string csExt;
	VxGetFileExtension( cs, csExt );
	return IsArchiveOrDocFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsArchiveOrDocFileExtention( const char * pExt )
{
	return stristr( ARCHIVE_OR_DOC_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsCdImageFile( std::string &cs )
{
	std::string csExt;
	VxGetFileExtension( cs, csExt );
	return IsCdImageFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsCdImageFileExtention( const char * pExt )
{
	return stristr( CD_IMAGE_FILE_EXTENTIONS, pExt )?1:0;
}
//============================================================================--
bool IsOtherFile( std::string &cs )
{
	std::string csExt;
	VxGetFileExtension( cs, csExt );
	return IsOtherFileExtention( csExt.c_str() );
}
//============================================================================--
bool IsOtherFileExtention( const char * pExt )
{
	return stristr( COMBINED_FILE_EXTENTIONS, pExt )?0:1;
}
